home *** CD-ROM | disk | FTP | other *** search
- property spriteNum, mySprite, myOffMember, myOffOverMember, myOffDownMember, myOffCommand, myOnMember, myOnOverMember, myOnDownMember, myOnCommand, theMouseWasUp, myRollover, myState, ourID, ourGroupList, ourMouseDown
-
- on getBehaviorDescription me
- end
-
- on getBehaviorTooltip me
- return "Create an ON/OFF button which reacts to rollovers and clicks. " & "Use several such buttons together as a radio button group."
- end
-
- on beginSprite me
- Initialize(me)
- end
-
- on prepareFrame me
- CheckForRollover(me)
- end
-
- on mouseDown me
- end
-
- on mouseUp me
- if ourMouseDown[1] then
- Toggle(me)
- end if
- end
-
- on mouseUpOutSide me
- CheckGroupForClick(me)
- end
-
- on Initialize me
- mySprite = sprite(me.spriteNum)
- ourGroupList = []
- myOffMember = member(myOffMember)
- myOffOverMember = member(myOffOverMember)
- myOffDownMember = member(myOffDownMember)
- myOnMember = member(myOnMember)
- myOnOverMember = member(myOnOverMember)
- myOnDownMember = member(myOnDownMember)
- sendAllSprites(#ToggleButton_GroupRollCall, ourID, ourGroupList)
- call(#ToggleButton_MouseDownList, ourGroupList, [0])
- end
-
- on CheckForRollover me
- mouseOverMe = the rollover = me.spriteNum
- if myRollover = mouseOverMe then
- if theMouseWasUp = the mouseUp then
- exit
- else
- theMouseWasUp = the mouseUp
- if mouseOverMe then
- if the mouseUp then
- case myState of
- 1:
- mySprite.member = myOnOverMember
- 0:
- mySprite.member = myOffOverMember
- end case
- end if
- end if
- end if
- else
- myRollover = mouseOverMe
- if ourMouseDown[1] then
- if myRollover then
- case myState of
- 1:
- mySprite.member = myOnDownMember
- 0:
- mySprite.member = myOffDownMember
- end case
- else
- case myState of
- 1:
- mySprite.member = myOnMember
- 0:
- mySprite.member = myOffMember
- end case
- end if
- else
- if not (the mouseDown) and myRollover then
- case myState of
- 1:
- mySprite.member = myOnOverMember
- 0:
- mySprite.member = myOffOverMember
- end case
- else
- case myState of
- 1:
- mySprite.member = myOnMember
- 0:
- mySprite.member = myOffMember
- end case
- end if
- end if
- end if
- end
-
- on clickOn me
- ourMouseDown[1] = 1
- case myState of
- 1:
- mySprite.member = myOnDownMember
- 0:
- mySprite.member = myOffDownMember
- end case
- end
-
- on Toggle me, whichState
- if voidp(whichState) then
- myState = not myState
- else
- myState = whichState
- end if
- ourMouseDown[1] = 0
- theMouseWasUp = 1
- case myState of
- 1:
- mySprite.member = myOnMember
- updateStage()
- do(myOnCommand)
- 0:
- mySprite.member = myOffMember
- updateStage()
- do(myOffCommand)
- end case
- if ourGroupList.count() then
- if myState then
- call(#ToggleButton_Off, ourGroupList, me)
- end if
- end if
- end
-
- on CheckGroupForClick me
- groupRollover = call(#ToggleButton_Rollover, ourGroupList, [])
- if not groupRollover.count() then
- ourMouseDown[1] = 0
- end if
- end
-
- on ToggleButton_GroupRollCall me, groupID, groupList
- if groupID = ourID then
- ourGroupList = groupList
- ourGroupList.append(me)
- end if
- return groupList
- end
-
- on ToggleButton_MouseDownList me, mouseDownList
- ourMouseDown = mouseDownList
- end
-
- on ToggleButton_Rollover me, theList
- if the rollover = me.spriteNum then
- theList.append(me.spriteNum)
- end if
- return theList
- end
-
- on ToggleButton_Off me, callingBehavior
- if callingBehavior = me then
- exit
- end if
- Toggle(me, 0)
- end
-
- on ToggleButton_State me, groupID, statesList
- if not voidp(groupID) then
- if groupID <> ourID then
- exit
- end if
- end if
- case ilk(statesList) of
- #void:
- return myState
- #list:
- statesList.append(myState)
- #propList:
- statesList.addProp(me.spriteNum, myState)
- end case
- return statesList
- end
-
- on ToggleButton_ActiveButton me, groupID, theList
- if not voidp(groupID) then
- if groupID <> ourID then
- exit
- end if
- end if
- if not listp(theList) then
- theList = [:]
- end if
- if not theList.count() and myState then
- theList.addProp(#sprite, me.spriteNum)
- theList.addProp(#behavior, me)
- end if
- return theList
- end
-
- on isOKToAttach me, aSpriteType, aSpriteNum
- tisok = 0
- if aSpriteType = #graphic then
- tisok = 1
- end if
- return tisok
- end
-
- on getPropertyDescriptionList me
- theMember = sprite(the currentSpriteNum).member
- theMemberNum = theMember.number
- return [#myOffMember: [#comment: "-OFF STATE- Standard member:", #format: #graphic, #default: theMember], #myOffOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 1)], #myOffDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 2)], #myOnMember: [#comment: "-ON STATE- Standard member", #format: #graphic, #default: member(theMemberNum + 3)], #myOnOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 4)], #myOnDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 5)], #myOnCommand: [#comment: "-COMMAND SENT- when switched ON", #format: #string, #default: "sendAllSprites #Toggle_On, the currentSpriteNum"], #myOffCommand: [#comment: "when switched OFF", #format: #string, #default: "sendAllSprites #Toggle_Off, the currentSpriteNum"], #ourID: [#comment: "ID string for the group", #format: #string, #default: EMPTY]]
- end
-